#include <iostream>
#include <stack>
using namespace std;

int n;
stack<int> ans;

bool isodd(int x)
{
	return x & 1;
}

void opt(int x)
{
	if (x == 1) return;
	if (isodd((x+1)/2)) {
		ans.push(1);
		opt((x+1)/2);
	} else {
		ans.push(2);
		opt((x-1)/2);
	}
}

int main()
{
	cin >> n;
	if (n%2 == 0) {
		cout << "No solution" << endl;
		return 0;
	}
	opt(n);
	cout << ans.size() << endl;
	while (!ans.empty()) {
		cout << ans.top() << " ";
		ans.pop();
	}
}
